home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / shell / igo / gosource / title.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-16  |  5.8 KB  |  357 lines

  1. #define DEBUG 0
  2. /* 
  3.     TOWNS囲碁棋譜記録プログラム
  4.                                           1992/02/25  久保田俊也
  5.  
  6.     91/02/25  kiftitle モジュールを本体より分離 
  7.                 kifu_titleデ-タを操作する関数の集まり 
  8.  
  9. */
  10. #include <stdio.h>
  11. #include <string.h>
  12. #include <ctype.h>
  13. #include "igo.h"
  14. #include "banx.h"
  15. #include "kiffile.h"
  16. #include "title.h"
  17. #define SPACE20 "                    "
  18.  
  19. char *my_itowazenkaku(int x);
  20.  
  21. YMDHM    ZERO_TIME = { 0, 0, 0, 0, 0};
  22. KIF_TITLE kif_title;
  23. static char save_fname[84] = "";
  24. static int save_state= 0;
  25. static int save_flg= 0;
  26. static int judge_flg= 0;
  27.  
  28. int title_init()
  29. {
  30.  
  31. /*    kif_title.ver = 2;     93/3/1 変更 */
  32.     kif_title.ver = 3;    /* 93/7/8 変更 */
  33.     kif_title.handy = 0;
  34.     strcpy( kif_title.player_black , SPACE20);
  35.     strcpy( kif_title.player_white , SPACE20);
  36.     strcpy( kif_title.play_space , SPACE20);
  37.     kif_title.play_start = ZERO_TIME;
  38.     kif_title.play_end = ZERO_TIME;
  39.     kif_title.komi_id = -1;
  40.     kif_title.komi_number = -1;
  41.     kif_title.hanmoku_id = -1;
  42.     kif_title.vicdef_id = -1;
  43.     kif_title.vicdef_number = 0;
  44.     save_fname[0] = '\0';
  45.  
  46.     return 0;
  47. }
  48.  
  49. int title_blacknameset(char *blackname)
  50. {
  51.  
  52.     if(strlen(blackname) >= 21){
  53.         return -1;
  54.     }
  55.     strcpy( kif_title.player_black, blackname);
  56.     return 0;
  57. }
  58.  
  59. int title_blacknameread(char *blackname)
  60. {
  61.     kif_title.player_black[20] = '\0';
  62.     strcpy( blackname, kif_title.player_black);
  63.     return 0;
  64. }
  65.  
  66. int title_whitenameset(char *whitename)
  67. {
  68.  
  69.     if(strlen(whitename) >= 21){
  70.         return -1;
  71.     }
  72.     strcpy( kif_title.player_white, whitename);
  73.     return 0;
  74. }
  75.  
  76. int title_whitenameread(char *whitename)
  77. {
  78.  
  79.     kif_title.player_white[20] = '\0';
  80.     strcpy( whitename, kif_title.player_white);
  81.     return 0;
  82. }
  83.  
  84. int title_playspaceset(char *play_space)
  85. {
  86.  
  87.     if(strlen(play_space) >= 21){
  88.         return -1;
  89.     }
  90.     strcpy( kif_title.play_space, play_space);
  91.     return 0;
  92. }
  93.  
  94. int title_playspaceread(char *play_space)
  95. {
  96.  
  97.     kif_title.play_space[20] = '\0';
  98.     strcpy( play_space, kif_title.play_space);
  99.     return 0;
  100. }
  101.  
  102. int title_komiset(int komi_id, int komi_number, int hanmoku_id)
  103. {
  104.  
  105.     if(komi_id == 0 || komi_id == 1){
  106.         kif_title.komi_id = komi_id;
  107.     }else{
  108.         kif_title.komi_id = 2;
  109.     }
  110.     kif_title.komi_number = komi_number;
  111.     kif_title.hanmoku_id = hanmoku_id;
  112.     return 0;
  113. }
  114.  
  115. int title_komiread(int *komi_id, int *komi_number, int *hanmoku_id)
  116. {
  117.  
  118.     *komi_id = kif_title.komi_id;
  119.     *komi_number = kif_title.komi_number;
  120.     *hanmoku_id = kif_title.hanmoku_id;
  121.     return 0;
  122. }
  123.  
  124. int title_issueset(int vicdef_id, int vicdef_number)
  125. {
  126.  
  127.     if(vicdef_id == 0 || vicdef_id == 1 || vicdef_id == 2){
  128.         kif_title.vicdef_id = vicdef_id;
  129.     }else{
  130.         kif_title.vicdef_id = 3;
  131.     }
  132.     kif_title.vicdef_number = vicdef_number;
  133.     return 0;
  134. }
  135.  
  136. int title_issueread(int *vicdef_id, int *vicdef_number)
  137. {
  138.  
  139.     *vicdef_id = kif_title.vicdef_id;
  140.     *vicdef_number = kif_title.vicdef_number;
  141.     return 0;
  142. }
  143.  
  144. int title_playstart_time_set(YMDHM play_start)
  145. {
  146.  
  147.     kif_title.play_start = play_start;
  148.     return 0;
  149. }
  150.  
  151. YMDHM *title_playstart_time_read()
  152. {
  153.     
  154.     return &(kif_title.play_start);
  155. }
  156.  
  157. int title_playend_time_set(YMDHM play_end)
  158. {
  159.  
  160.     kif_title.play_end = play_end;
  161.     return 0;
  162. }
  163.  
  164. YMDHM *title_playend_time_read()
  165. {
  166.     return &(kif_title.play_end);
  167.  
  168. }
  169.  
  170. int title_handy_set(int handy)
  171. {
  172.  
  173.     kif_title.handy = handy;
  174.     return 0;
  175. }
  176.  
  177. int title_handy_read()
  178. {
  179.     return kif_title.handy;
  180.  
  181. }
  182.  
  183. /* handy は特殊な形でファイルに格納されている
  184.    置き石を int の正の数で返す 
  185.  */
  186. int title_handy_int_read()
  187. {
  188. int    i;
  189.  
  190.     switch(kif_title.handy){
  191.         case '2' + 0: i = 2; break;
  192.         case '2' + 1: i = 3; break;
  193.         case '2' + 2: i = 4; break;
  194.         case '2' + 3: i = 5; break;
  195.         case '2' + 4: i = 6; break;
  196.         case '2' + 5: i = 7; break;
  197.         case '2' + 6: i = 8; break;
  198.         case '2' + 7: i = 9; break;
  199.         case '2' + 8: i = 3; break;
  200.  
  201.         default:      i = 1; break;
  202.     }
  203.  
  204.     return i;
  205.  
  206. }
  207. char *title_handy_wazenkaku_read()
  208. {
  209. int    i;
  210.  
  211.     switch(kif_title.handy){
  212.         case '2' + 0: i = 2; break;
  213.         case '2' + 1: i = 3; break;
  214.         case '2' + 2: i = 4; break;
  215.         case '2' + 3: i = 5; break;
  216.         case '2' + 4: i = 6; break;
  217.         case '2' + 5: i = 7; break;
  218.         case '2' + 6: i = 8; break;
  219.         case '2' + 7: i = 9; break;
  220.         case '2' + 8: i = 3; break;
  221.  
  222.         default:      i = 3; break;
  223.     }
  224.  
  225.     return my_itowazenkaku(i);
  226.  
  227. }
  228.  
  229. int title_tenumber_set(int tenumber)
  230. {
  231.  
  232.     if(0<tenumber && tenumber<9999){
  233.         kif_title.te_number = tenumber;
  234.         return 0;
  235.     }else{
  236.         return 1;
  237.     }
  238. }
  239.  
  240. int title_tenumber_read()
  241. {
  242.     return kif_title.te_number;
  243.  
  244. }
  245. int title_ver_read()
  246. {
  247.     return kif_title.ver;
  248.  
  249. }
  250.  
  251. int title_bantype_set( BAN_TYPE ban_type)
  252. {
  253.     kif_title.ban_type = ban_type;
  254.     return 0;
  255.  
  256. }
  257.  
  258. BAN_TYPE *title_bantype_read()
  259. {
  260.     return &kif_title.ban_type;
  261.  
  262. }
  263.  
  264. int title_fname_set( char fname[])
  265. {
  266. int i;
  267.  
  268.     for(i=0;fname[i]!='\0' && i<80;i++){
  269.         save_fname[i] = toupper(fname[i]);
  270.     }
  271.     save_fname[i]='\0';
  272.     if( strstr( save_fname, ".KIF") == NULL ){
  273.         strcat( save_fname, ".KIF");
  274.     }
  275.     return 0;
  276. }
  277.  
  278. char *title_fname_read()
  279. {
  280.     return save_fname;
  281. }
  282.  
  283. char *title_short_fname_read()
  284. {
  285. static char *s_char;
  286.  
  287.     /* 漢字について現在考慮していない */
  288.     s_char = strrchr( save_fname, '\\');
  289.     if((int *)s_char == NULL){
  290.         return save_fname;
  291.     }
  292.     s_char++;
  293.     if(strlen(s_char)<13){
  294.         return s_char;
  295.     }else{
  296.         save_fname[0] = '\0';
  297.         return save_fname;
  298.     }
  299. }
  300.  
  301. int title_fname_clear()
  302. {
  303.     save_fname[0] = '\0';
  304.     return 0;
  305. }
  306.  
  307. int title_state_set( int state)
  308. {
  309.  
  310.     save_state= state;
  311.     return 0;
  312. }
  313.  
  314. int title_state_read()
  315. {
  316.     return save_state;
  317. }
  318.  
  319. int title_fsave_on()
  320. {
  321.  
  322.     save_flg = ON;
  323.     return 0;
  324. }
  325.  
  326. int title_fsave_off()
  327. {
  328.  
  329.     save_flg = OFF;
  330.     return 0;
  331. }
  332.  
  333. int title_fsave_read()
  334. {
  335.     return save_flg;
  336. }
  337.  
  338. int title_judge_on()
  339. {
  340.  
  341.     judge_flg = ON;
  342.     return 0;
  343. }
  344.  
  345. int title_judge_off()
  346. {
  347.  
  348.     judge_flg = OFF;
  349.     return 0;
  350. }
  351.  
  352. int title_judge_read()
  353. {
  354.     return judge_flg;
  355. }
  356.  
  357.